package life.graph;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;

import javax.swing.Timer;

import life.Coordinate;
import life.Liso_0_1;
import life.World;

class TestAnimazione extends Panel implements ActionListener
{

	int raggio; /* raggio del cerchio */
	int millisec; /* ogni quanti millisecondi si muove */
	Timer timer; /* per regolare l'animazione */
	boolean versoDestra; /* da che parte va */
	int x_min; /* ascissa minima corrente del cerchio */
	ArrayList<Liso_0_1> lisoList = new ArrayList<Liso_0_1>();
	World w;

	public TestAnimazione(int raggio_cerchio, int velocita)
	{
		raggio = raggio_cerchio;
		millisec = velocita;
		x_min = 0; /* cerchio appoggiato a parete sinistra */
		versoDestra = true; /* direzione di moto */
		w = new World(new Coordinate(600.0, 600.0));
		for (int i = 0; i < 20; i++)
		{
			lisoList.add(new Liso_0_1(w, 100000));
		}

		timer = new Timer(millisec, this);
		timer.start();
	}

	/*
	 * azione da compiere quando scatta il timer, sposta il cerchio e poi invoca
	 * il ridisegno
	 */
	public void actionPerformed(ActionEvent e)
	{

		for (Liso_0_1 l : lisoList)
		{
			l.move(w);
		}
		repaint();
	}

	public void paint(Graphics g)
	{
		super.paint(g);
		g.setColor(Color.blue);
		for (Liso_0_1 liso : lisoList)
		{
			g.drawArc(liso.getX(), liso.gety(), 8, 8, 0, 360);
		}
	}

	public static void main(String[] args)
	{
		Frame f = new Frame("MuoviCerchio");
		TestAnimazione pp = new TestAnimazione(30, 50);
		pp.setBackground(Color.white);
		f.add(pp);
		f.setSize(new Dimension(600, 600));
		f.setVisible(true);
	}
}